

package com.sunlee.admin.api.module.sys.service;


import com.sunlee.admin.api.module.sys.dto.SysParamsDTO;
import com.sunlee.admin.api.module.sys.entity.SysParamsEntity;
import com.sunlee.common.core.entity.PageData;
import com.sunlee.common.core.service.BaseService;

import java.util.List;
import java.util.Map;

/**
 * 参数管理
 *
 * @author sunlee
 */
public interface SysParamsService extends BaseService<SysParamsEntity> {

    /**
     * 分页查询参数
     *
     * @param params 查询参数
     * @return 分页参数列表
     */
    PageData<SysParamsDTO> page(Map<String, Object> params);

    /**
     * 查询参数列表
     *
     * @param params 查询参数
     * @return 参数列表
     */
    List<SysParamsDTO> list(Map<String, Object> params);

    /**
     * 通过主键查询参数
     *
     * @param id 主键ID
     * @return 参数
     */
    SysParamsDTO get(Long id);

    /**
     * 插入参数
     *
     * @param dto 参数实体
     */
    void save(SysParamsDTO dto);

    /**
     * 更新参数
     *
     * @param dto 参数实体
     */
    void update(SysParamsDTO dto);

    /**
     * 根据主键ID批量删除
     *
     * @param ids 主键ID
     */
    void delete(Long[] ids);

    /**
     * 根据参数编码，获取参数的value值
     *
     * @param paramCode 参数编码
     * @return 返回参数的值
     */
    String getValue(String paramCode);

    /**
     * 根据参数编码，获取value的Object对象
     *
     * @param paramCode 参数编码
     * @param clazz     Object对象
     * @return 返回参数对象
     */
    <T> T getValueObject(String paramCode, Class<T> clazz);

    /**
     * 根据参数编码，更新value
     *
     * @param paramCode  参数编码
     * @param paramValue 参数值
     * @return 更新结果
     */
    int updateValueByCode(String paramCode, String paramValue);
}
